/*###################################################################*
#
# MP (Mitchell Pell) Base - CrossPlatform Base Utilities.
# Copyright (C) 2014  Mitchell Pell
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
####################################################################*/
#ifndef BASE_COMMAND_H_
#define BASE_COMMAND_H_

#include "CommandTemplate.h"
	// - boost::shared_ptr
#include "Event.h"

using mp_base::interfaces::Event;

namespace mp_base { namespace console {
		/*!----------------------------------------------------------------
		*	@class		Command
		*	@brief
		*
		*	@author		Mitchell Pell
		*	@date		11/23/2013
		*	@version	1.0
		*
		*	@revisions	Revision History:
		*
		*					- Version 1.0 11/23/2013
		*						-# Initial Make
		*
		-----------------------------------------------------------------*/
		class Command : public CommandTemplate, public Event
		{
		public:
			/*! Default Constructor */
			Command()
				: CommandTemplate(), Event(){}
			/*! */
			Command(const string cmd, const string args)
				: CommandTemplate(cmd, args), Event(){}
			/*! */
			Command(const char* cmd, const char* args)
				: CommandTemplate(cmd, args), Event(){}
			/*! */
			Command(const Command& cmd)
				: CommandTemplate(cmd), Event(){}

		protected:
			static const string CMD_ERROR;
		};
		typedef boost::shared_ptr<Command> spCommand;
	}
}

#endif